/**
 * jQuery AutoComplete Ceps do Brasil 
 * @version 1.0.0
 * @author cjc
 * @package jquery
 */

;(function($,window,document,undefined){
    var PluginName = 'autocompleteCep',
        defaults = {
            fields:{
                logradouro:!1,
                tipo_logradouro:!1,
                bairro:!1,
                cidade:!1,
                uf:!1
            }

        };
        

     function Plugin(element,options){

        this.element = element;
        this.options = $.extend({},defaults,options);
        this._name = PluginName;

        this.initialize();
     }     

     Plugin.prototype = {

          initialize: function(){
               var self =  this;
                $(this.element).change(function(){
                  var cep = this.value;
                           $ajaxCep = self.loadCep(cep);

                          $ajaxCep.done(function(data){
                                    
                                  $('.grid-loading').remove();
                                  var fields =  self.options.fields;

                                  if(fields.logradouro){
                                       $(fields.logradouro).val(data.logradouro);
                                  }
                                  if(fields.bairro){
                                       $(fields.bairro).val(data.bairro);
                                  }
                                  if(fields.cidade){
                                       $(fields.cidade).val(data.cidade);
                                  }
                                  if(fields.uf){
                                       $(fields.uf).val(data.uf);
                                  }


                          });
                              
                });
          },

          loadCep:function(cep){

                      var cep = cep.replace(/\-/,'') ,
                       fields = this.options.fields, 
                       params = cep + '&formato=json',
                        self  = this;
                    
                        
                    if(cep.length == 8){
                     
                       return   $.ajax({
                            url:'http://cep.republicavirtual.com.br/web_cep.php?cep='+params,
                            dataType:'json',
                            beforeSend:function(){
                            	 var w = $(self.element).width();
                                 $('<div class="grid-loading"></div>').insertAfter(self.element);
                                 $('.grid-loading').css({'margin-left': w + 30});    
                            }
                          });     

                    }
                
                return false;

          }


     };



     $.fn[PluginName] = function(options){

        return this.each(function(){
              
            if(!$.data(this,'plugin_'+ PluginName)){
                  $.data(this,'plugin_'+ PluginName , new Plugin(this,options));
            } 
        });
     }

})(jQuery,window);